package com.shlh.saas.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shlh.saas.entity.PaymentOrder;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 支付订单服务接口
 */
public interface PaymentOrderService extends IService<PaymentOrder> {
    
    /**
     * 创建支付订单
     * @param userId 用户ID
     * @param amount 支付金额
     * @param paymentType 支付类型：1-微信支付，2-支付宝支付
     * @param packageType 套餐类型
     * @param packagePoints 套餐积分/次数
     * @param packageDuration 套餐时长
     * @return 支付订单
     */
    PaymentOrder createPaymentOrder(Long userId, BigDecimal amount, Integer paymentType, 
                                   String packageType, Integer packagePoints, String packageDuration);
    
    /**
     * 获取微信支付二维码
     * @param orderNo 订单号
     * @return 二维码URL
     */
    String getWechatPayQrCode(String orderNo);
    
    /**
     * 获取支付宝支付表单
     * @param orderNo 订单号
     * @return 支付表单HTML
     */
    String getAlipayPayQrCode(String orderNo);
    
    /**
     * 处理微信支付回调
     * @param notifyData 回调数据
     * @return 处理结果
     */
    boolean handleWechatPayNotify(Map<String, String> notifyData);
    
    /**
     * 处理支付宝支付回调
     * @param notifyData 回调数据
     * @return 处理结果
     */
    boolean handleAlipayNotify(Map<String, String> notifyData);
    
    /**
     * 根据订单号查询订单
     * @param orderNo 订单号
     * @return 支付订单
     */
    PaymentOrder getOrderByOrderNo(String orderNo);
    
    /**
     * 更新订单为已支付状态
     * @param order 订单对象
     * @param transactionId 交易号
     * @return 更新结果
     */
    boolean updateOrderPaid(PaymentOrder order, String transactionId);
    
    /**
     * 生成订单号
     * @param userId 用户ID
     * @return 订单号
     */
    String generateOrderNo(Long userId);
} 